JavaScript Module Federation orqali dinamik plagin tizimlarini yarating. Masshtablanuvchi ilovalar uchun arxitektura, joriy etish, xavfsizlik va eng yaxshi amaliyotlarni o'rganing.
JavaScript Module Federation Plagin Arxitekturasi: Dinamik Plagin Tizimini Yaratish
Bugungi murakkab veb-dasturlash landshaftida modulli, masshtablanuvchan va qo‘llab-quvvatlanadigan ilovalarni yaratish juda muhim. Bunga erishishning kuchli usullaridan biri bu plagin arxitekturasi bo‘lib, unda funksionallik mustaqil, dinamik ravishda yuklanadigan modullarga bo‘linadi. Webpack 5 ning xususiyati bo‘lgan JavaScript Module Federation bunday arxitekturalarni amalga oshirish uchun mustahkam mexanizmni taqdim etadi. Ushbu maqolada dinamik plagin tizimini yaratish uchun Module Federation'dan foydalanishning nozik jihatlari ko‘rib chiqiladi.
Module Federation nima?
Module Federation JavaScript ilovalariga ish vaqtida kodni dinamik ravishda almashish imkonini beradi. Bu shuni anglatadiki, bir ilovadagi modul (kod parchasi) boshqa ilova tomonidan qayta qurish yoki qayta joylashtirishga hojat qoldirmasdan to‘g‘ridan-to‘g‘ri ishlatilishi mumkin. Bunga turli xil yig‘ishlar (builds) va hatto turli xil joylashtirishlar (deployments) orqali modullarni ochish va iste’mol qilish orqali erishiladi.
Npm paketlari kabi an’anaviy kod almashish usullari, umumiy bog‘liqlik yangilanganda iste’mol qiluvchi ilovalarni qayta qurish va qayta joylashtirishni talab qiladi. Module Federation bu qo‘shimcha ishlarni bartaraf etib, uni tez-tez yangilanishlar va mustaqil joylashtirishlar talab qilinadigan holatlar uchun ideal qiladi.
Nima uchun Plagin Arxitekturalari uchun Module Federation'dan foydalanish kerak?
Module Federation plagin arxitekturalarini yaratishda bir qancha afzalliklarni taqdim etadi:
- Dinamik Modul Yuklash: Plaginlarni ish vaqtida yuklash va o‘chirish mumkin, bu esa ilovalarga to‘liq qayta joylashtirishni talab qilmasdan o‘zgaruvchan talablarga moslashish imkonini beradi.
- Bog'liqlikni uzish: Plaginlar mustaqil ravishda ishlab chiqiladi va joylashtiriladi, bu esa dasturning turli qismlari o'rtasidagi bog'liqlikni kamaytiradi.
- Masshtablanuvchanlik: Ilovani mavjud funksionallikka ta'sir qilmasdan yangi plaginlar bilan osongina kengaytirish mumkin.
- Qo'llab-quvvatlanuvchanlik: Plaginlarni mustaqil ravishda yangilash va qo'llab-quvvatlash mumkin, bu asosiy ilovaga xatoliklarni kiritish xavfini kamaytiradi.
- Kodni qayta ishlatish: Plaginlar bir nechta ilovalarda qayta ishlatilishi mumkin, bu esa izchillikni oshiradi va ishlab chiqish harakatlarini kamaytiradi.
- Versiyalash va Orqaga Qaytarish: Siz plaginlarning turli versiyalarini boshqarishingiz va kerak bo'lganda oldingi versiyalarga osongina qaytishingiz mumkin.
Asosiy Tushunchalar: Host va Masofaviy Konteynerlar
Module Federation ikkita asosiy tushuncha atrofida aylanadi:
- Host Konteyner: Masofaviy modullarni (plaginlarni) iste'mol qiladigan asosiy ilova.
- Masofaviy Konteyner: Host tomonidan iste'mol qilinadigan modullarni (plaginlarni) ochib beradigan ilova.
Host konteyneri masofaviy konteynerdan masofaviy kirish faylini (remote entry file) dinamik ravishda oladi, bu fayl ochilgan modullar manifestini o‘z ichiga oladi. Shundan so‘ng, host ushbu modullarga o‘zining kod bazasining bir qismi kabi kirishi va ulardan foydalanishi mumkin.
Module Federation yordamida Dinamik Plagin Tizimini Amalga Oshirish: Qadamma-qadam Qo'llanma
Keling, Module Federation yordamida oddiy plagin tizimini yaratish jarayonini ko'rib chiqamiz. Biz host ilovasini va masofaviy plagin ilovasini yaratamiz.
1. Host Ilovasini Sozlash (Host Konteyneri)
Birinchi navbatda, yangi loyiha katalogini yarating va yangi npm loyihasini ishga tushiring:
mkdir host-app
cd host-app
npm init -y
Webpack va uning bog'liqliklarini o'rnating:
npm install webpack webpack-cli webpack-dev-server html-webpack-plugin --save-dev
`host-app` katalogida quyidagi konfiguratsiyaga ega `webpack.config.js` faylini yarating:
const HtmlWebpackPlugin = require('html-webpack-plugin');
const ModuleFederationPlugin = require('webpack/lib/container/ModuleFederationPlugin');
const path = require('path');
module.exports = {
mode: 'development',
devtool: 'source-map',
entry: './src/index.js',
output: {
path: path.resolve(__dirname, 'dist'),
filename: 'bundle.js',
},
devServer: {
port: 3000,
hot: true,
static: {
directory: path.join(__dirname, 'dist'),
},
},
module: {
rules: [
{
test: /\.jsx?$/,
exclude: /node_modules/,
use: {
loader: 'babel-loader',
options: {
presets: ['@babel/preset-env', '@babel/preset-react'],
},
},
},
],
},
plugins: [
new ModuleFederationPlugin({
name: 'Host',
remotes: {
'plugin': 'Plugin@http://localhost:3001/remoteEntry.js',
},
shared: ['react', 'react-dom'],
}),
new HtmlWebpackPlugin({
template: './public/index.html',
}),
],
};
Izoh:
- `name`: Host ilovasining nomi.
- `remotes`: Host iste'mol qiladigan masofaviy konteynerlarni belgilaydi. Bu holatda, u `plugin` nomli masofaviy konteynerni `http://localhost:3001/remoteEntry.js` manzilidan iste’mol qilmoqda. `Plugin@` sintaksisi masofaviy ModuleFederationPluginning nomi 'Plugin' ekanligini anglatadi.
- `shared`: Host va masofaviy konteynerlar o‘rtasida almashiladigan bog‘liqliklar ro‘yxatini ko‘rsatadi. Bu ushbu bog‘liqliklarning dublikat nusxalarining yuklanishini oldini oladi. `shared` dan foydalanish xatoliklarni oldini olish va plaginning to‘g‘ri ishlashini ta’minlash uchun juda muhimdir.
`src` katalogini yarating va quyidagi tarkibga ega `index.js` faylini qo'shing:
import React, { Suspense } from 'react';
import ReactDOM from 'react-dom/client';
const PluginComponent = React.lazy(() => import('plugin/PluginComponent'));
const App = () => {
return (
<div>
<h1>Host Application</h1>
<Suspense fallback={<div>Loading Plugin...</div>}>
<PluginComponent />
</Suspense>
</div>
);
};
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(<App />);
Izoh:
- Biz 'plugin' masofaviy manbasidan `PluginComponent` ni dinamik ravishda import qilish uchun `React.lazy` dan foydalanmoqdamiz. Bu plaginni "dangasa" yuklash (lazy loading) va dastlabki yuklanish kechikishlarining oldini olish uchun juda muhimdir.
- `Suspense` komponenti plagin olinayotganda yuklanish holatini boshqarish uchun ishlatiladi.
`public` katalogini yarating va quyidagi tarkibga ega `index.html` faylini qo'shing:
<!DOCTYPE html>
<html>
<head>
<title>Host Application</title>
</head>
<body>
<div id="root"></div>
<script src="./bundle.js"></script>
</body>
</html>
`.babelrc` Babel konfiguratsiya faylini qo'shing:
{
"presets": ["@babel/preset-env", "@babel/preset-react"]
}
`package.json` faylingizni `start` skripti bilan yangilang:
{
"name": "host-app",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"start": "webpack serve --mode development",
"build": "webpack --mode production"
},
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {
"@babel/core": "^7.23.9",
"@babel/preset-env": "^7.23.9",
"@babel/preset-react": "^7.23.3",
"babel-loader": "^9.1.3",
"html-webpack-plugin": "^5.6.0",
"webpack": "^5.90.3",
"webpack-cli": "^5.1.4",
"webpack-dev-server": "^4.15.1"
},
"dependencies": {
"react": "^18.2.0",
"react-dom": "^18.2.0"
}
}
2. Masofaviy Ilovani Sozlash (Plagin Konteyneri)
Plagin uchun yangi loyiha katalogini yarating:
mkdir plugin-app
cd plugin-app
npm init -y
Webpack va uning bog'liqliklarini o'rnating:
npm install webpack webpack-cli webpack-dev-server html-webpack-plugin --save-dev
`plugin-app` katalogida quyidagi konfiguratsiyaga ega `webpack.config.js` faylini yarating:
const HtmlWebpackPlugin = require('html-webpack-plugin');
const ModuleFederationPlugin = require('webpack/lib/container/ModuleFederationPlugin');
const path = require('path');
module.exports = {
mode: 'development',
devtool: 'source-map',
entry: './src/index.js',
output: {
path: path.resolve(__dirname, 'dist'),
filename: 'bundle.js',
},
devServer: {
port: 3001,
hot: true,
static: {
directory: path.join(__dirname, 'dist'),
},
},
module: {
rules: [
{
test: /\.jsx?$/,
exclude: /node_modules/,
use: {
loader: 'babel-loader',
options: {
presets: ['@babel/preset-env', '@babel/preset-react'],
},
},
},
],
},
plugins: [
new ModuleFederationPlugin({
name: 'Plugin',
filename: 'remoteEntry.js',
exposes: {
'./PluginComponent': './src/PluginComponent',
},
shared: ['react', 'react-dom'],
}),
new HtmlWebpackPlugin({
template: './public/index.html',
}),
],
};
Izoh:
- `name`: Masofaviy konteyner (plagin) nomi. Bu hostning `remotes` konfiguratsiyasida ishlatilgan nomga mos kelishi shart.
- `filename`: Host tomonidan olinadigan masofaviy kirish faylining nomi.
- `exposes`: Masofaviy konteyner tomonidan ochiladigan modullarni belgilaydi. Bu holda, biz `PluginComponent` modulini ochmoqdamiz. `./PluginComponent` kaliti hostning import iborasida ishlatiladi (masalan, `import('plugin/PluginComponent')`).
- `shared`: Host kabi, almashiladigan bog‘liqliklar ro‘yxatini ko‘rsatadi. Almashiladigan bog‘liqliklar va ularning versiyalari host va masofaviy manba o‘rtasida mos kelishi juda muhim.
`src` katalogini yarating va quyidagi tarkibga ega `PluginComponent.jsx` faylini qo'shing:
import React from 'react';
const PluginComponent = () => {
return (
<div style={{border: '1px solid blue', padding: '10px'}}>
<h2>Plugin Component</h2>
<p>This is a dynamically loaded plugin!</p>
</div>
);
};
export default PluginComponent;
PluginComponent'ni eksport qilish uchun `src` katalogida `index.js` faylini yarating:
import PluginComponent from './PluginComponent';
export default PluginComponent;
`public` katalogini yarating va quyidagi tarkibga ega `index.html` faylini qo'shing:
<!DOCTYPE html>
<html>
<head>
<title>Plugin Application</title>
</head>
<body>
<div id="root"></div>
<script src="./bundle.js"></script>
</body>
</html>
`.babelrc` Babel konfiguratsiya faylini qo'shing:
{
"presets": ["@babel/preset-env", "@babel/preset-react"]
}
`package.json` faylingizni `start` skripti bilan yangilang:
{
"name": "plugin-app",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"start": "webpack serve --mode development",
"build": "webpack --mode production"
},
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {
"@babel/core": "^7.23.9",
"@babel/preset-env": "^7.23.9",
"@babel/preset-react": "^7.23.3",
"babel-loader": "^9.1.3",
"html-webpack-plugin": "^5.6.0",
"webpack": "^5.90.3",
"webpack-cli": "^5.1.4",
"webpack-dev-server": "^4.15.1"
},
"dependencies": {
"react": "^18.2.0",
"react-dom": "^18.2.0"
}
}
3. Ilovalarni Ishga Tushirish
Host va plagin ilovalarini ularning tegishli kataloglarida `npm start` buyrug'ini ishga tushirish orqali ishga tushiring.
Brauzeringizda `http://localhost:3000` manziliga o'ting. Siz dinamik ravishda yuklangan plagin komponentiga ega host ilovasini ko'rishingiz kerak.
Ilg'or Xususiyatlar va Mulohazalar
Versiyalash va Orqaga Qaytarish
Module Federation versiyalashni qo'llab-quvvatlaydi, bu sizga plaginlarning turli versiyalarini boshqarish imkonini beradi. Siz hostning `remotes` konfiguratsiyasida versiya cheklovlarini belgilashingiz mumkin. Masalan:
remotes: {
'plugin': 'Plugin@http://localhost:3001/remoteEntry.js@1.0.0',
}
Bu hostga plaginning 1.0.0 versiyasidan foydalanishni aytadi. Agar yangi versiya mavjud bo‘lsa ham, host aniq yangilanmaguncha belgilangan versiyadan foydalanishda davom etadi. Buzuvchi o‘zgarishlarning oldini olish va dastur barqarorligini ta’minlash uchun mustahkam versiyalashni amalga oshirish juda muhimdir.
Xavfsizlik Mulohazalari
Module Federation'dan foydalanganda xavfsizlik birinchi o'rinda turadi. Quyidagilarni hisobga oling:
- Autentifikatsiya va Avtorizatsiya: Faqat ruxsat berilgan foydalanuvchilar plaginlarga kirishi va ulardan foydalanishi mumkinligini ta'minlash uchun tegishli autentifikatsiya va avtorizatsiya mexanizmlarini joriy eting.
- Kod Yaxlitligi: Zararli kodning ilovaga kiritilishini oldini olish uchun masofaviy modullarning yaxlitligini tekshiring. Ilovaning resurslarni yuklashi mumkin bo'lgan manbalarni cheklash uchun Kontent Xavfsizligi Siyosatidan (CSP) foydalanishni o'ylab ko'ring.
- Bog'liqliklarni Boshqarish: Zaifliklardan qochish uchun ham host, ham masofaviy konteynerlarning bog'liqliklarini diqqat bilan boshqaring. Bog'liqliklarni muntazam ravishda eng so'nggi versiyalarga yangilang.
- Kiritilgan Ma'lumotlarni Tekshirish: Inyeksiya hujumlarining oldini olish uchun masofaviy modullardan olingan barcha ma'lumotlarni tekshiring.
- CORS (Cross-Origin Resource Sharing): Host ilovasiga plagin ilovasidan masofaviy kirish fayliga kirishiga ruxsat berish uchun CORS'ni to'g'ri sozlang.
Plaginlarni Topish va Boshqarish
Murakkabroq plagin tizimlari uchun sizga plaginlarni topish va boshqarish mexanizmi kerak bo'lishi mumkin. Bunga plagin registri yoki kashfiyot xizmati orqali erishish mumkin. Markaziy registr mavjud plaginlar, jumladan ularning joylashuvi, versiyasi va bog'liqliklari haqida ma'lumotlarni saqlashi mumkin. So'ngra host ilovasi kerakli plaginlarni topish va yuklash uchun registrga so'rov yuborishi mumkin.
Ushbu yondashuvlarni ko'rib chiqing:
- Markazlashtirilgan Konfiguratsiya: Plagin URL'larini markaziy konfiguratsiya faylida (masalan, JSON fayli) saqlang, uni host ilovasi ish vaqtida o'qiydi. Bu sizga host ilovasini qayta joylashtirmasdan plaginlarni osongina qo'shish, olib tashlash yoki yangilash imkonini beradi.
- API asosidagi kashfiyot: Mavjud plaginlar ro'yxatini qaytaradigan API nuqtasini yarating. Host ilovasi keyin bu ro'yxatni olib, plaginlarni dinamik ravishda yuklashi mumkin.
- Hodisalarga asoslangan arxitektura: Yangi plaginlar mavjud bo'lganda host ilovasini xabardor qilish uchun hodisalar avtobusi (event bus) yoki xabarlar navbatidan foydalaning. Bu asinxron plaginlarni kashf qilish va yuklash imkonini beradi.
Dinamik Konfiguratsiya va Plaginni Faollashtirish
Foydalanuvchilarga plaginlarni dinamik ravishda sozlash va faollashtirish imkonini berish kuchli xususiyatdir. Bu plagin konfiguratsiyalarini saqlash va boshqarish mexanizmini talab qiladi. Plagin sozlamalarini saqlash uchun ma'lumotlar bazasi, konfiguratsiya fayli yoki bulutga asoslangan konfiguratsiya xizmatidan foydalanishingiz mumkin. So'ngra host ilovasi bu sozlamalarni ish vaqtida o'qib, plaginlarni mos ravishda faollashtirishi mumkin. Plagin konfiguratsiyalarini boshqarish uchun foydalanuvchi interfeysini taqdim etishni o'ylab ko'ring.
Asinxron Operatsiyalar va Xatoliklarni Ishlash
Dinamik yuklangan plaginlar bilan ishlaganda asinxron operatsiyalarni va xatoliklarni chiroyli tarzda boshqarish muhimdir. Asinxron kodni boshqarish uchun `async/await` yoki `Promise`lardan foydalaning. Plaginni yuklash yoki bajarish paytida yuzaga keladigan har qanday xatoliklarni ushlash va qayd etish uchun to'g'ri xatoliklarni qayta ishlashni joriy eting. Foydalanuvchiga ma'lumot beruvchi xato xabarlarini taqdim eting. Barcha plaginlardagi xatoliklarni kuzatish uchun markazlashtirilgan xatoliklarni qayd etish xizmatidan foydalanishni o'ylab ko'ring.
Kodni Bo'lish va Ishlash Samaradorligini Optimizatsiya qilish
Ishlash samaradorligini optimallashtirish uchun dastur va plaginlarni kichikroq qismlarga bo'lish uchun kodni bo'lishdan (code splitting) foydalaning. Bu brauzerga faqat ma'lum bir sahifa yoki xususiyat uchun zarur bo'lgan kodni yuklab olish imkonini beradi. Webpack kodni bo'lish uchun o'rnatilgan yordamni taqdim etadi. Plaginlarni faqat kerak bo'lganda yuklash uchun "dangasa" yuklashdan (lazy loading) foydalanishni o'ylab ko'ring. Fayl hajmini kamaytirish uchun kodni minimallashtiring va siqing.
Testlash va Uzluksiz Integratsiya
Plagin tizimingiz to'g'ri ishlayotganiga ishonch hosil qilish uchun uni sinchkovlik bilan sinovdan o'tkazing. Birlik testlari, integratsiya testlari va uchdan-uchgacha (end-to-end) testlarni yozing. Kod o'zgartirilganda testlarni avtomatik ravishda ishga tushirish uchun uzluksiz integratsiya (CI) tizimidan foydalaning. Dastur va plaginlarni joylashtirishni avtomatlashtirish uchun uzluksiz yetkazib berish (CD) quvurini joriy eting.
Haqiqiy Hayotdagi Misollar va Qo'llash Holatlari
Module Federation turli xil haqiqiy hayotdagi ilovalarda qo'llanilmoqda, jumladan:
- Elektron Tijorat Platformalari: Mahsulot tavsiyalari, to‘lov shlyuzlari va yetkazib berish provayderlarini dinamik ravishda yuklash. Masalan, global elektron tijorat platformasi mijozning joylashuviga qarab turli to‘lov provayderlarini integratsiya qilish uchun Module Federation'dan foydalanishi mumkin. Shimoliy Amerikada u Stripe uchun plaginni yuklashi mumkin, Yevropada esa PayPal yoki Klarna uchun plaginni yuklashi mumkin.
- Kontentni Boshqarish Tizimlari (CMS): Foydalanuvchilarga CMS funksionalligini kengaytirish uchun plaginlarni o'rnatish va faollashtirishga ruxsat berish. CMS foydalanuvchilarga SEO optimallashtirish, ijtimoiy media integratsiyasi yoki kontent tahlili uchun plaginlarni o'rnatishga imkon berishi mumkin.
- Boshqaruv Panellari va Analitika Platformalari: Turli vidjetlar va vizualizatsiyalarni dinamik ravishda yuklash. Global analitika platformasi Google Analytics, Adobe Analytics yoki Salesforce kabi turli ma'lumotlar manbalari uchun plaginlarni yuklashi mumkin.
- Mikrofrontend Arxitekturalari: Katta hajmdagi veb-ilovalarni mustaqil ravishda joylashtiriladigan mikrofrontendlar to'plami sifatida qurish. Yirik korxona o'zining veb-ilovasini mikrofrontendlar to'plami sifatida qurish uchun Module Federation'dan foydalanishi mumkin, har biri hisobni boshqarish, mahsulot katalogi yoki buyurtmani qayta ishlash kabi muayyan biznes funksiyasi uchun mas'uldir.
- Dizayn Tizimlari: UI komponentlari va dizayn tokenlarini bir nechta ilovalar o'rtasida almashish. Bir nechta brendlarga ega global tashkilot barcha ilovalarida umumiy dizayn tizimini almashish, izchillikni ta'minlash va ishlab chiqish harakatlarini kamaytirish uchun Module Federation'dan foydalanishi mumkin.
Module Federation yordamida Dinamik Plagin Tizimlarini Yaratish uchun Eng Yaxshi Amaliyotlar
Module Federation yordamida dinamik plagin tizimlarini yaratishda yodda tutish kerak bo'lgan ba'zi eng yaxshi amaliyotlar:
- Plaginlarni Kichik va Maqsadli saqlang: Har bir plagin muayyan funksionallik uchun mas'ul bo'lishi kerak. Bu plaginlarni saqlash va yangilashni osonlashtiradi.
- Aniq Plagin Interfeyslarini Belgilang: Plaginlar host ilovasi bilan qanday o'zaro ta'sir qilishini aniq interfeyslar orqali belgilang. Bu plaginlarning host bilan mos kelishini ta'minlaydi va buzuvchi o'zgarishlarning oldini oladi.
- Semantik Versiyalashdan Foydalaning: Plaginlaringiz versiyalarini boshqarish uchun semantik versiyalashdan foydalaning. Bu o'zgarishlarni kuzatish va moslikni ta'minlashni osonlashtiradi.
- Hujjatlar Taqdim Eting: Plaginlaringiz uchun aniq va qisqa hujjatlarni taqdim eting. Bu foydalanuvchilarga plaginlarni qanday o'rnatish, sozlash va ishlatishni tushunishga yordam beradi.
- Xavfsizlik bo'yicha eng yaxshi amaliyotlarni qo'llang: Ilovangiz va plaginlaringizni zaifliklardan himoya qilish uchun xavfsizlik bo'yicha eng yaxshi amaliyotlarga rioya qiling.
- Plagin Ishlash Samaradorligini Kuzatib Boring: Har qanday to'siqlarni aniqlash uchun plaginlaringizning ishlash samaradorligini kuzatib boring. Ishlash samaradorligini oshirish uchun kodni optimallashtiring.
- Joylashtirishni Avtomatlashtiring: Ilovangiz va plaginlaringizni joylashtirishni avtomatlashtiring. Bu xatolar xavfini kamaytiradi va yangilanishlarning tezda joylashtirilishini ta'minlaydi.
- Izchil Kodlash Uslubidan Foydalaning: Barcha plaginlarda izchil kodlash uslubini qo'llang. Bu kodni o'qish va qo'llab-quvvatlashni osonlashtiradi.
- Birlik Testlarini Yozing: Plaginlaringiz to'g'ri ishlayotganiga ishonch hosil qilish uchun ular uchun birlik testlarini yozing.
- Linterdan Foydalaning: Kodingizni xatolar uchun avtomatik tekshirish uchun linterdan foydalaning.
Xulosa
JavaScript Module Federation dinamik plagin tizimlarini yaratish uchun kuchli va moslashuvchan mexanizmni taqdim etadi. Module Federation'dan foydalanib, o‘zgaruvchan talablarga moslasha oladigan modulli, masshtablanuvchan va qo‘llab-quvvatlanadigan ilovalarni yaratishingiz mumkin. Ushbu maqolada keltirilgan eng yaxshi amaliyotlarga rioya qilish orqali siz tashkilotingiz ehtiyojlariga javob beradigan mustahkam va xavfsiz plagin tizimlarini yaratishingiz mumkin.
Ushbu texnologiya xalqaro miqyosda ayniqsa qimmatlidir, chunki u bizneslarga butunlay alohida ilovalarni joylashtirmasdan o‘z dasturiy ta’minot takliflarini muayyan hududlar yoki mijozlar segmentlariga moslashtirish imkonini beradi. Mahalliy to‘lov shlyuzlarini integratsiya qilishdan tortib, hududga xos kontentni yetkazib berishgacha, Module Federation global miqyosda yanada shaxsiylashtirilgan va samarali foydalanuvchi tajribasini ta’minlaydi.